package bomberman.modelo.mapa;

import bomberman.modelo.IContenible;
import bomberman.modelo.Partida;
import bomberman.modelo.observadores.Observadores;
import bomberman.modelo.obstaculos.BloqueLadrillo;
import bomberman.modelo.personajes.Bombita;
import fiuba.algo3.titiritero.modelo.ObjetoPosicionable;
import fiuba.algo3.titiritero.modelo.ObjetoVivo;

public class Salida extends Casillero implements ObjetoPosicionable, ObjetoVivo {
  private Partida partida;
  
  public Salida(Posicion unaPosicion, IContenible unContenidoBajo, IContenible unContenidoMedio,
    IContenible unContenidoAlto) {
    super(unaPosicion, unContenidoBajo, unContenidoMedio, unContenidoAlto);
    setContenidoBajo(new BloqueLadrillo(this)); // Mejor que se le pueda poner
// cualquier cosa (se lo pasamos por parametro como unContenidoBajo
  }
  
  public void setPartida(Partida miPartida) {
    partida = miPartida;
  }
  
  @Override
  public int getX() {
    return getPosicion().getHorizontal();
  }
  
  @Override
  public int getY() {
    return getPosicion().getVertical();
  }
  
  @Override
  public void setContenidoBajo(IContenible unContenido) {
    if (unContenido == null) {
      Observadores.notificar(this);
    }
    
    super.setContenidoBajo(unContenido);
  }
  
  @Override
  public void vivir() {
    if (getContenidoBajo() instanceof Bombita) {
      partida.pasarDeNivel((Bombita) this.getContenidoBajo());
    }
  }
}
